package com.amir.common.api


import com.amir.common.beans.AddressEntity
import com.amir.common.beans.AppVersionInfoEntity
import com.amir.common.beans.ApplyInitEntityWrapper
import com.amir.common.beans.BaseResult
import com.amir.common.beans.CompanyCatgListEntity
import com.amir.common.beans.CompanyEntity
import com.amir.common.beans.CompanyLoginEntity
import com.amir.common.beans.DefaultCityEntity
import com.amir.common.beans.FeedBackEntity
import com.amir.common.beans.FileEntity
import com.amir.common.beans.GatheringCodeEntity
import com.amir.common.beans.GatheringInfoEntity
import com.amir.common.beans.GeoCoderEntity
import com.amir.common.beans.HomeEntity
import com.amir.common.beans.LogOffResult
import com.amir.common.beans.LoginEntity
import com.amir.common.beans.MenuListResponse
import com.amir.common.beans.MsgListWrapper
import com.amir.common.beans.MyOrderEntity
import com.amir.common.beans.OrderDetailEntity
import com.amir.common.beans.OrderWrapperEntity
import com.amir.common.beans.PayResultEntity
import com.amir.common.beans.PickingWarehouseEntity
import com.amir.common.beans.ProDuctEntity
import com.amir.common.beans.ReportEntity
import com.amir.common.beans.SMSEntity
import com.amir.common.beans.TencentMapSearchEntity
import com.amir.common.beans.TokenEntity
import com.amir.common.beans.UserHomeInfoWrapper
import com.amir.common.beans.UserInfoEntity
import com.amir.common.beans.UserMsgCatalogsEntity
import com.amir.common.beans.WalletDescEntity
import com.amir.common.beans.WalletEntity
import com.amir.common.beans.WorkOrderReportEntity
import com.amir.common.beans.ZoneEntity
import com.google.gson.JsonElement
import io.reactivex.Observable
import okhttp3.MultipartBody
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.Part
import retrofit2.http.Query
import retrofit2.http.QueryMap
import retrofit2.http.Url


interface ApiServer {

    /**
     * 登陆
     */
    @POST(ApiContents.Login)
    fun login(
        @Query("returnurl") returnurl: String = "",//可谓空
        @Query("response_type") response_type: String = "code",
        @Query("scope") scope: String = "base",
        @Query("state") state: String = "1234",//随机数
        @Body json: RequestBody
    ): Observable<LoginEntity>

    /**
     * 获取公司列表
     */
    @POST(ApiContents.LoginCompanyList)
    fun LoginCompanyList(
        @Query(value = "AccessToken") accessToken: String,
        @Query(value = "SysId") SysId: String,
        @Query(value = "AccountId") accountid: String?
    ): Observable<CompanyEntity>

    /**
     * 验证码登录
     */
    @POST(ApiContents.AuthorizeByValidCode)
    fun AuthorizeByValidCode(
        @Query("returnurl") returnurl: String = "",//可为空
        @Query("response_type") response_type: String = "code",
        @Query("scope") scope: String = "base",
        @Query("state") state: String = "1234",//随机数
        @Body json: RequestBody
    ): Observable<LoginEntity>


    /**
     * 自动登录
     */
    @POST(ApiContents.AuthorizeByAuto)
    fun AuthorizeByAuto(
        @Query("returnurl") returnurl: String = "",//可为空
        @Query("response_type") response_type: String = "code",
        @Query("scope") scope: String = "base",
        @Query("state") state: String = "1234",//随机数
        @Body json: RequestBody
    ): Observable<LoginEntity>
    /**
     * 获取token
     */
    @POST(ApiContents.AccessToken)
    fun getToken(
        @Query("code") code: String,
        @Query("grant_type") grant_type: String
    ): Observable<TokenEntity>

    /**
     * 获取用户信息 暂时不用
     */
    @Deprecated("暂时不用")
    @GET(ApiContents.UserInfo)
    fun getUserInfo(
        @Query("AccessToken") accessToken: String,
        @Query("accountId") accountId: String,
        @Query("lang") zhCn: String
    ): Observable<UserInfoEntity>

    /**
     * 获取用户信息
     */
    @GET(ApiContents.initUserInfo)
    fun initUserInfo(
        @Query("AccessToken") accessToken: String,
        @Query("AppId") appId: String?,
        @Query("TempleteCode") templeteCode: String?
    ): Observable<UserHomeInfoWrapper>

    @GET(ApiContents.bindDeviceId)
    fun bindDeviceId(
        @Query("AccessToken") accessToken: String,
        @Query("AccountId") accountId: String,
        @Query("DeviceId") deviceId: String,
        @Query("Platform") platform: String = "android"
    ): Observable<BaseResult>

    /**
     * 刷新token
     */
    @POST(ApiContents.RefreshToken)
    fun refreshToken(
        @Query("refresh_token") token: String?,
        @Query("grant_type") grant_type: String,
        @Body json: RequestBody
    ): Observable<JsonElement>

    /**
     * 检测Token
     */
    @POST(ApiContents.CheckToken)
    fun checkToken(
        @Query("access_token") token: String?,
        @Query("accountid") accountid: String
    ): Observable<JsonElement>

    /**
     * 发送短信
     */
    @GET("${ApiContents.SendVerifyCode}")
    fun sendSMS(
        @Query("Tel") tel: String,
        @Query("OrderCmpyCode") OrderCmpyCode: String? = null,
    ): Observable<SMSEntity>

    /**
     * 检查短信验证码
     */
    @GET(value = ApiContents.CheckVerifyCode)
    fun checkSMS(
        @Query("Tel") tel: String,
        @Query("VerifyCode") code: String,
        @Query("SmsId") smsId: String?
    ): Observable<BaseResult>

    /**
     * 首页工单数据
     */
    @GET(value = ApiContents.WorkOrder)
    fun getHomeData(@Query(value = "AccessToken") token: String?): Observable<HomeEntity>

    @GET(value = ApiContents.LoginCompany)
    fun companyLogin(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "SysId") SysId: String,
        @Query(value = "AccountId") accountid: String?,
        @Query(value = "CmpyCode") cmpyCode: String,
        @Query(value = "Platform") platform: String = "android"
    ): Observable<CompanyLoginEntity>

    /**
     * 抢单列表
     */
    @GET(value = ApiContents.Grabasingle)
    fun robOrderListAPi(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "CmpyCode") cmpyCode: String?,
        @Query(value = "Lat") lat: String?,
        @Query(value = "Lng") lng: String?
    ): Observable<OrderWrapperEntity>

    /** 抢单
     */
    @GET(value = ApiContents.QiangDan)
    fun robOrder(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,//订单编号
        @Query(value = "Latitude") latitude: String?,
        @Query(value = "Longitude") longitude: String?
    ): Observable<BaseResult>

    /**
     * 订单详情
     */
    @GET(value = ApiContents.OrderDetails)
    fun orderDetails(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,
        @Query(value = "Lat") lat: String?,
        @Query(value = "Lng") lng: String?
    ): Observable<OrderDetailEntity>

    @GET(value = ApiContents.ServiceHis)
    fun ServiceHis(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "Tel") tel: String?,
        @Query(value = "PageNo") pageNo: Int?,
    ): Observable<OrderWrapperEntity>

    /**
     * 我的订单列表
     */
    @GET(value = ApiContents.MyOrder)
    fun myOrderApi(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "kw") kw: String = "",
        @Query(value = "status") status: String = "2",
        @Query(value = "PageNo") page: Int,
        @Query(value = "Lat") lat: String?,
        @Query(value = "Lng") lng: String?
    ): Observable<MyOrderEntity>

    /**
     * 拒绝订单
     */
    @POST(value = ApiContents.refuseOrder)
    @FormUrlEncoded
    fun refuseOrder(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,
        @Query(value = "Latitude") Latitude: String,
        @Query(value = "Longitude") Longitude: String,
        @Field(value = "AssConfirmDescr") AssConfirmDescr: String
    ): Observable<JsonElement>

    @FormUrlEncoded
    @POST
    fun repairDone(
        @Url url: String,
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "RepairId") repairId: String,
        @Field(value = "Revenue01") revenue01: String?,
        @Field(value = "Revenue02") revenue02: String?,
        @Field(value = "Revenue03") revenue03: String?,
        @Field(value = "Revenue04") revenue04: String?,
        @Field(value = "Revenue05") revenue05: String?,
        @Field(value = "Revenue01Name") revenue01Name: String,
        @Field(value = "Revenue02Name") revenue02Name: String,
        @Field(value = "Revenue03Name") revenue03Name: String,
        @Field(value = "Revenue04Name") revenue04Name: String,
        @Field(value = "Revenue05Name") revenue05Name: String,
        @Field(value = "Expense01") expense01: String?,
        @Field(value = "Expense02") expense02: String?,
        @Field(value = "Expense03") expense03: String?,
        @Field(value = "Expense04") expense04: String?,
        @Field(value = "Expense05") expense05: String?,
        @Field(value = "Expense01Name") expense01Name: String,
        @Field(value = "Expense02Name") expense02Name: String,
        @Field(value = "Expense03Name") expense03Name: String,
        @Field(value = "Expense04Name") expense04Name: String,
        @Field(value = "Expense05Name") expense05Name: String,
        @Field(value = "CustType") custType: String,//客户类型
        @Field(value = "RepairDescr") repairDescr: String,//服务记录
        @Field(value = "CallPhotos") callPhotos: String,//图片路径，多个图片用","号隔开
        @Field(value = "Latitude") latitude: String,
        @Field(value = "Longitude") longitude: String,
        @Field(value = "Remark2") remark2: String,
        @Field(value = "Remark3") remark3: String
    ): Observable<BaseResult>

    /**
     * 保存订单
     */
    @POST(value = ApiContents.RepairDoneSave)
    @FormUrlEncoded
    fun saveOrder(
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "RepairId") repairId: String,
        @Field(value = "Revenue01") revenue01: String,
        @Field(value = "Revenue01Name") revenue01Name: String,
        @Field(value = "Revenue02") revenue02: String,
        @Field(value = "Revenue02Name") revenue02Name: String,
        @Field(value = "Revenue03") revenue03: String,
        @Field(value = "Revenue03Name") revenue03Name: String,
        @Field(value = "Revenue04") revenue04: String,
        @Field(value = "Revenue04Name") revenue04Name: String,
        @Field(value = "Revenue05") revenue05: String,
        @Field(value = "Revenue05Name") revenue05Name: String,
        @Field(value = "Expense01") expense01: String,
        @Field(value = "Expense01Name") expense01Name: String,
        @Field(value = "Expense02") expense02: String,
        @Field(value = "Expense02Name") expense02Name: String,
        @Field(value = "Expense03") expense03: String,
        @Field(value = "Expense03Name") expense03Name: String,
        @Field(value = "Expense04") expense04: String,
        @Field(value = "Expense04Name") expense04Name: String,
        @Field(value = "Expense05") expense05: String,
        @Field(value = "Expense05Name") expense05Name: String,
        @Field(value = "CustType") CustType: String,
        @Field(value = "RepairDescr") repairDescr: String,
        @Field(value = "CallPhotos") callPhotos: String,
        @Field(value = "Latitude") latitude: String,
        @Field(value = "Longitude") longitude: String
    ): Observable<JsonElement>

    /**
     * 领料仓库列表
     */
    @GET(value = ApiContents.JxcSheetInit)
    fun pickingListData(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?
    ): Observable<PickingWarehouseEntity>

    /**
     * 领料删除
     */
    @GET(value = ApiContents.DeleteMaterial)
    fun deletePicking(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,
        @Query(value = "ItemId") itemId: Int?
    ): Observable<BaseResult>


    /**
     * 我的订单-领料-更换仓库
     */
    @GET(value = ApiContents.WareChange)
    fun changeWarehouse(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "WareId") mWareId: Int,
        @Query(value = "RepairId") repairId: String?,
    ): Observable<JsonElement>

    /**
     * 完工上报初始化
     */
    @GET(value = ApiContents.RepairDoneInit)
    fun RepairDoneInit(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,
    ): Observable<ReportEntity>

    @GET(value = ApiContents.PayInit)
    fun PayInit(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?
    ): Observable<GatheringInfoEntity>

    @GET(value = ApiContents.WeixinNative)
    fun WeixinNative(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,
        @Query(value = "ServCharge") servCharge: Float
    ): Observable<GatheringCodeEntity>

    @GET(value = ApiContents.PayResult)
    fun PayResult(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "orderid") repairId: String?
    ): Observable<PayResultEntity>

    /**
     * 超时订单
     */
    @GET(value = ApiContents.TimeOutList)
    fun overTimeOrderList(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "kw") kw: String,
        @Query(value = "PageNo") pageNo: Int
    ): Observable<OrderWrapperEntity>

    @GET(value = ApiContents.GetWallData)
    fun getWallData(@Query(value = "AccessToken") accessToken: String?): Observable<WalletEntity>

    /**
     * 钱包流水
     */
    @GET(value = ApiContents.WalletDesc)
    fun getWalletDesc(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "Start") start: String,
        @Query(value = "End") end: String,
        @Query(value = "PageNo") pageNo: Int
    ): Observable<WalletDescEntity>

    /**
     * 修改密码
     */
    @GET(value = ApiContents.UpdatePwd)
    fun changePwd(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "OldPwd") oldpwd: String,
        @Query(value = "NewPwd") newpwd: String
    ): Observable<BaseResult>

    /**
     * 修改密码
     */
    @GET(value = ApiContents.UpdateNickName)
    fun updateNickname(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "DispName") dispName: String
    ): Observable<BaseResult>

    /**
     * 我的订单-领料-选商品
     */
    @GET(value = ApiContents.ProdList)
    fun ProdList(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "WareId") mWareId: String?,
        @Query(value = "RepairId") repairId: String?,
        @Query(value = "kw") kw: String?,
        @Query(value = "PageNo") pageNo: Int
    ): Observable<ProDuctEntity>

    @GET(value = ApiContents.ProdAdd)
    fun ProdAdd(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "WareId") mWareId: String?,
        @Query(value = "RepairId") repairId: String?,
        @Query(value = "ItemId") itemId: Int?,
        @Query(value = "SaleQty") saleQty: String?,
        @Query(value = "SalePrice") salePrice: String?,
    ): Observable<BaseResult>

    @GET
    fun mapkeyWordSearch(
        @Url url: String,
        @Query(value = "keyword") keyword: String,
        @Query(value = "region") region: String,//搜索范围
        @Query(value = "region_fix") region_fix: String = "0",//0：[默认]当前城市无结果时，自动扩大范围到全国匹配 1：固定在当前城市
        @Query(value = "key") key: String//开发密钥（Key）
    ): Observable<TencentMapSearchEntity>

    /**
     * 地址转坐标
     */
    @GET
    fun Geocoder(
        @Url url: String,
        @Query(value = "address") keyword: String,
        @Query(value = "key") key: String//开发密钥（Key）
    ): Observable<GeoCoderEntity>

    /**
     * 地址转坐标
     */
    @GET
    fun GeocoderToAddress(
        @Url url: String,
        @Query(value = "location") keyword: String?,
        @Query(value = "key") key: String//开发密钥（Key）
    ): Observable<GeoCoderEntity>

    @Multipart
    @POST(value = ApiContents.UploadFile)
    fun UploadFile(
        @Query(value = "AccessToken") accessToken: String?,
        @Part file: MultipartBody.Part
    ): Observable<FileEntity>

    @POST(value = ApiContents.forgetPwd)
    fun resetPwd(
        @Query(value = "Tel") tel: String,
        @Query(value = "NewPwd") pwd: String,
        @Query(value = "SmsId") smsId: String,
        @Query(value = "VerifyCode") verifyCode: String,
    ): Observable<BaseResult>

    @POST(value = ApiContents.Register)
    fun register(
        @Query(value = "Tel") tel: String,
        @Query(value = "DispName") nickname: String,
        @Query(value = "Pwd") pwd: String,
        @Query(value = "SmsId") smsId: String,
        @Query(value = "VerifyCode") verifyCode: String,
        @Query(value = "TGID") tdId: Int? = 0
    ): Observable<BaseResult>

    /**
     * 接单
     */
    @POST(value = ApiContents.AssConfirm)
    fun confirmOrder(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "RepairId") repairId: String?,//订单编号
        @Query(value = "Latitude") latitude: String?,
        @Query(value = "Longitude") longitude: String?
    ): Observable<BaseResult>

    /**
     * 退出登录
     */
    @GET(ApiContents.LoginOut)
    fun loginOut(
        @Query("AccessToken") accessToken: String
    ): Observable<BaseResult>

    @GET(ApiContents.UpdateAvater)
    fun updateAvatar(
        @Query("AccessToken") accessToken: String,
        @Query("HeadImgUrl") headImgUrl: String
    ): Observable<BaseResult>

    /**
     * 接单
     */
    @POST(value = ApiContents.Version)
    fun checkVersion(
        @Query("Platform") platform: String = "android"
    ): Observable<AppVersionInfoEntity>

    /**
     * 申请入职初始化
     */
    @GET(value = ApiContents.ApplyInit)
    fun applyInit(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "CmpyCode") repairId: String?,
    ): Observable<BaseResult>

    /**
     * 加载申请入职资料
     */
    @GET(value = ApiContents.ApplyWorkInit)
    fun applyWorkInit(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "CmpyCode") repairId: String?,
    ): Observable<ApplyInitEntityWrapper>

    /**
     * 提交申请入职资料
     */
    @GET(value = ApiContents.ApplyWork)
    fun submitApply(
        @Query(value = "AccessToken") accessToken: String?,
        @QueryMap query: Map<String, String>?,
    ): Observable<BaseResult>

    /**
     * 上报位置
     */
    @GET(value = ApiContents.ReportLocation)
    fun reportLocation(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "DeviceId") deviceId: String?,
        @Query(value = "Latitude") latitude: String?,
        @Query(value = "Longitude") longitude: String?,
        @Query(value = "Precision") precision: Float
    ): Observable<BaseResult>

    /**
     * 获取消息类型
     */
    @GET(value = ApiContents.MsgCatalogs)
    fun getMsgCataLog(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "OrderCmpyCode") orderCmpyCode: String?
    ): Observable<UserMsgCatalogsEntity>

    /**
     * 获取消息列表
     */
    @GET(value = ApiContents.MsgList)
    fun getMsgList(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "MsgType") MsgType: Int,
        @Query(value = "PageNo") PageNo: Int,
        @Query(value = "PageSize") PageSize: Int = 10,
        @Query(value = "Keyword") Keyword: String? = null,
    ): Observable<MsgListWrapper>

    /**
     * 获取消息列表
     */
    @GET(value = ApiContents.AddressList)
    fun AddressList(
        @Query(value = "AccessToken") accessToken: String?
    ): Observable<AddressEntity>

    /**
     * 初始化地址
     */
    @GET(value = ApiContents.AddressInit)
    fun AddressInit(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "AppId") AppId: String?,
        @Query(value = "TempleteCode") TempleteCode: String?
    ): Observable<DefaultCityEntity>

    /**
     * 设置默认
     */
    @FormUrlEncoded
    @POST(value = ApiContents.AddressDefault)
    fun setAddressDefault(
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "AddrId") AddrId: Int
    ): Observable<BaseResult>

    /**
     * 删除
     */
    @FormUrlEncoded
    @POST(value = ApiContents.DeleteAddress)
    fun deleteAddress(
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "AddrId") AddrId: Int
    ): Observable<BaseResult>


    /**
     * 添加地址
     */
    @FormUrlEncoded
    @POST(value = ApiContents.AddAddress)
    fun addAddress(
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "Tel") Tel: String,
        @Field(value = "ContactName") ContactName: String,
        @Field(value = "ProvID") ProvID: Int,
        @Field(value = "CityID") CityID: Int,
        @Field(value = "TownID") TownID: Int,
        @Field(value = "Zone5") Zone5: String?,
        @Field(value = "Latitude") Latitude: String?,
        @Field(value = "Longitude") Longitude: String?,
    ): Observable<BaseResult>

    /**
     * 修改地址
     */
    @FormUrlEncoded
    @POST(value = ApiContents.EditAddress)
    fun editAddress(
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "AddrID") AddrID: Int,
        @Field(value = "Tel") Tel: String,
        @Field(value = "ContactName") ContactName: String,
        @Field(value = "ProvID") ProvID: Int,
        @Field(value = "CityID") CityID: Int,
        @Field(value = "TownID") TownID: Int,
        @Field(value = "Zone5") Zone5: String?,
        @Field(value = "Latitude") Latitude: String?,
        @Field(value = "Longitude") Longitude: String?,
    ): Observable<BaseResult>

    /**
     * 获取地区
     * */
    @GET(value = ApiContents.ZoneInfo)
    fun zoneInfo(
        @Query(value = "AccessToken") accessToken: String?,
    ): Observable<ZoneEntity>

    @GET(value = ApiContents.FeedbackList)
    fun feedList(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "PageNo") pi: Int,
        @Query(value = "PageSize") PageSize: Int = 10
    ): Observable<FeedBackEntity>

    /**
     * 删除反馈
     */
    @GET(value = ApiContents.DeleteFeedback)
    fun deleteFeed(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "OrderCmpyCode") OrderCmpyCode: String?,
        @Query(value = "FeelbackID") FeelbackID: String
    ): Observable<BaseResult>

    /**
     * 添加反馈
     */
    @FormUrlEncoded
    @POST(value = ApiContents.AddFeedback)
    fun addFeed(
        @Query(value = "AccessToken") accessToken: String?,
        @Field(value = "Comments") Comments: String,
        @Field(value = "Imgs") Imgs: String?
    ): Observable<BaseResult>

    @GET(value = ApiContents.WorkOrderReportR001)
    fun workOrderReportR001(
        @Query(value = "AccessToken") accessToken: String?,
        @Query(value = "StartDate") startDate: String?,
        @Query(value = "EndDate") endDate: String?
    ): Observable<WorkOrderReportEntity>

    @GET(value = ApiContents.CompanyCatgList)
    fun companyCatgList(
        @Query(value = "AccessToken") accessToken: String?
    ): Observable<CompanyCatgListEntity>

    @GET(value = ApiContents.MenuList)
    fun menuList(
        @Query(value = "AccessToken") accessToken: String?
    ): Observable<MenuListResponse>

    // 新增：注销账号API
    @POST(value = ApiContents.LogOff) // 接口路径
    fun logOff(
        @Query("AccessToken") accessToken: String // 输入参数：AccessToken（作为查询参数）
    ): Observable<LogOffResult> // 返回结果实体
}
